package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.entity.GoodsType;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description 商品信息
 */
public interface GoodsDao {


    String getMaxCode();



    /**
     * 分页查询库存
     * @return
     */
    Page<Goods> selectPage(String codeOrName);

    List<Goods> getGoodsTypeId(Integer goodsTypeId);

//    List<GoodsType> getAllGoodsType();
    GoodsType getAllGoodsType();


    /**
     * 根据goods_type_id获取到与p_id相同的数据
     * @param id
     */
    List<GoodsType> selectGoodsType(Integer id);

    /**
     * 新增分类
     * @param goodsTypeName
     * @param pId
     */
    void save(String goodsTypeName, Integer pId,Integer goodsTypeState);

    /**
     * 删除
     * @param goodsTypeId
     */
    void delete(Integer goodsTypeId);

    List<GoodsType> selectAll();

    Goods selectGoods(Integer goodsId);

    /**
     * 添加goods
     * @param goods
     */
    void saveGoods(Goods goods);

    /**
     * 修改goods
     * @param goods
     */
    void updateGoods(Goods goods);

    void deleteGoods(Integer goodsId);

    Page<Goods> getNoInventoryQuantity(@Param("nameOrCode") String nameOrCode);

    void updateType(GoodsType type);

    GoodsType selectType(Integer goodsTypeId);

    Page<Goods> getHasInventoryQuantity(@Param("nameOrCode") String nameOrCode);


    Page<Goods> listAlarm();

    Integer getSaleTotalByGoodsId(Integer goodsId);


}
